#include <stdio.h>
#include <stdlib.h>


// 位移运算

void bit_test_1()
{

    unsigned int a = 32;
    // << 向左移动一位，相当于乘2
    // >> 向右移动一位，相当于除2
    printf("%d", a >> 2);

}


void bit_test_3()
{

    unsigned char a = 3;
    unsigned char b = 56;
    // << 向左移动一位，相当于乘2
    // >> 向右移动一位，相当于除2

    //  ~  按位取反
    //  |  按位或操作
    //  &  按位与操作
    //  ^  按位异或操作  相同为0
    //还原i不同为1，一个对另一个数异或两次会还原
    printf("%d", a | (1 << 4));
    // printf("%d", a & (^ (1 << 4)));

}
void bit_test_2()
{

    unsigned int a = 1;


    // << 向左移动一位，相当于乘2
    // >> 向右移动一位，相当于除2
    printf("%x", ~ a);

}
// 位域

//  位运算  与 位域  只能针对整数

struct bs
{
    int a:8;
    int b:2;
    int c:6;
};

void bit_test_4()
{
    struct bs  bb;
    printf("%d\n",sizeof(struct bs));
    bb.a = 34;
    bb.b = 2;
    bb.c = 4;
    printf("%d\n",bb.a);

}
int bitMain()
{
    bit_test_4();
    return 0;
}
